import request, { serviceMaster } from '../utils/request';
import { API } from '../utils/config';

/**
 * 用户登录
 * @param username 用户名
 * @param password 密码
 * @returns Promise
 */
export function login(username: string, password: string) {
  return request({
    url: API.LOGIN,
    method: 'post',
    data: {
      username,
      password
    }
  });
}

/**
 * 用户注册
 * @param username 用户名
 * @param password 密码
 * @param email 电子邮箱
 * @returns Promise
 */
export function register(username: string, password: string, email: string) {
  return request({
    url: API.USER,
    method: 'post',
    data: {
      username,
      password,
      email
    }
  });
}

/**
 * 获取当前用户信息
 * @returns Promise
 */
export function getUserInfo() {
  return request({
    url: `${API.USER}/me`,
    method: 'get'
  });
}

/**
 * 退出登录
 * @returns Promise
 */
export function logout() {
  return request({
    url: API.LOGOUT,
    method: 'post'
  });
}

/**
 * 获取指定用户信息
 * @param id 用户ID
 * @returns Promise
 */
export function getUserById(id: string) {
  // 使用Master Key获取用户信息
  return serviceMaster({
    url: `${API.USER}/${id}`,
    method: 'get'
  });
}

/**
 * 获取用户列表
 * @param params 查询参数
 * @returns Promise
 */
export function getUserList(params?: any) {
  // 使用Master Key获取用户列表
  return serviceMaster({
    url: API.USER,
    method: 'get',
    params
  });
}

/**
 * 创建用户账号
 * @param data 用户数据
 * @returns Promise
 */
export function createUser(data: any) {
  // 构建用户数据对象
  const userData = {
    username: data.username,
    password: data.password || '123456', // 默认密码
    email: data.email || `user_${Date.now()}@example.com`, // 确保有电子邮箱
    mobilePhoneNumber: data.mobilePhoneNumber,
    loginName: data.loginName,
    wechat: data.wechat,
    employeeId: data.employeeId,
    departmentId: data.departmentId,
    roleName: data.roleName,
    status: data.status !== undefined ? data.status : true, // 默认启用
    addedBy: data.addedBy || 'admin'
  };

  // 使用Master Key创建用户
  return serviceMaster({
    url: API.USER,
    method: 'post',
    data: userData
  });
}

/**
 * 更新用户信息
 * @param id 用户ID
 * @param data 用户数据
 * @returns Promise
 */
export function updateUser(id: string, data: any) {
  // 移除不能直接更新的字段
  const updateData = { ...data };
  delete updateData.password; // 密码需要专门API更新
  delete updateData.username; // LeanCloud不允许直接修改用户名
  delete updateData.objectId; // 不能修改ID

  // 使用Master Key更新用户
  return serviceMaster({
    url: `${API.USER}/${id}`,
    method: 'put',
    data: updateData
  });
}

/**
 * 删除用户
 * @param id 用户ID
 * @returns Promise
 */
export function deleteUser(id: string) {
  // 使用Master Key删除用户
  return serviceMaster({
    url: `${API.USER}/${id}`,
    method: 'delete'
  });
}

/**
 * 启用或禁用用户
 * @param id 用户ID
 * @param status 状态值
 * @returns Promise
 */
export function updateUserStatus(id: string, status: boolean) {
  // 使用Master Key更新用户状态
  return serviceMaster({
    url: `${API.USER}/${id}`,
    method: 'put',
    data: { status }
  });
} 